#ifndef UTIL_H
#define UTIL_H

#include <QDialog>
#include <QMessageBox>
#include <QString>
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlError>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QVBoxLayout>
#include <QSqlQuery>
#include <QColorDialog>
#include <QPalette>

namespace ns_util
{
    class StringUtil; // 字符串相关功能
    class SqlUtil;
    class DatabasesManager;

}

// Sql管理类
class SqlUtil
{
public:
    SqlUtil(){}
    SqlUtil(const QString &host, const QString &dbName, const QString &user_name, QString &password);
    ~SqlUtil(){}

    void closeMySql();
    bool connectMySql();

public:
    QSqlDatabase _db;
    QString _host_name;
    QString _database_name;
    QString _user_name;
    QString _password;
};

// 字符串操作类
class StringUtil
{
public:
    void SplitString(const QString &str, std::vector<QString> &result, char delimiter);
};

// 数据库管理类
class DatabasesManager
{
    // Q_OBJECT
public:
    DatabasesManager();
    ~DatabasesManager();
    DatabasesManager(const QString &host, const QString &dbName, const QString &user_name, QString &password);

    bool open();
    void close();
    bool executeQuery(const QString& queryStr);
    QSqlQuery executeQueryWithResults(const QString &sqlStr);

private:
    QSqlDatabase _db;
    QString _host_name;
    QString _database_name;
    QString _user_name;
    QString _password;
};

#endif // UTIL_H
